package com.andreas.pattern;

import com.andreas.utils.ConnectionUtils;
import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * 描述：
 */
public class Recer2 {
    public static void main(String[] args) throws Exception {
        Connection connection = ConnectionUtils.getConnection();
        Channel channel = connection.createChannel();
        // 声明队列
        /*
         * 1.队列名称
         * 2.是否持久化
         * 3.是否对外暴露
         * 4.是否为null，false为null不删除，true为null时自动删除
         * 5.是否放入参数，在这里我们为null，null表示不传入参数。
         * */
        channel.queueDeclare("test_exchange_topic_queue_2", false, false, false, null);
        // 绑定路由（绑定 商品和订单相关 的消息）
        channel.queueBind("test_exchange_topic_queue_2", "test_exchange_topic",
                "product.#");
        channel.queueBind("test_exchange_topic_queue_2", "test_exchange_topic",
                "order.#");
        DefaultConsumer consumer = new DefaultConsumer(channel) {
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
                                       AMQP.BasicProperties properties, byte[] body) throws IOException {
                String s = new String(body);
                System.out.println("【消费者2】 = " + s);
            }
        };
        // 4.监听队列 true:自动消息确认
        channel.basicConsume("test_exchange_topic_queue_2", true, consumer);
    }
}
